package com.ruoyi.rsikManage.MonitorPoint.mapper;

import java.util.HashMap;
import java.util.List;

import com.ruoyi.rsikManage.MonitorPoint.domain.TMonitorPoint;
import com.ruoyi.rsikManage.MonitorPoint.domain.TMonitorPointRequest;
import org.apache.ibatis.annotations.Mapper;

/**
 * 设备Mapper接口
 *
 * @author sxygsj
 * @date 2024-11-29
 */
@Mapper
public interface TMonitorPointMapper
{
    /**
     * 查询设备
     *
     * @param apeId 设备主键
     * @return 设备
     */
    public TMonitorPoint selectTMonitorPointByApeId(String apeId);

    /**
     * 查询设备列表
     *
     * @param tMonitorPointRequest 设备
     * @return 设备集合
     */
    public List<TMonitorPoint> selectTMonitorPointList(TMonitorPointRequest tMonitorPointRequest);

    /**
     * 新增设备
     *
     * @param tMonitorPoint 设备
     * @return 结果
     */
    public int insertTMonitorPoint(TMonitorPoint tMonitorPoint);

    /**
     * 修改设备
     *
     * @param tMonitorPoint 设备
     * @return 结果
     */
    public int updateTMonitorPoint(TMonitorPoint tMonitorPoint);

    /**
     * 批量修改设备
     *
     * @param tMonitorPoints 设备
     * @return 结果
     */
    public int batchUpdateTMonitorPoint(List<TMonitorPoint> tMonitorPoints);

    /**
     * 删除设备
     *
     * @param apeId 设备主键
     * @return 结果
     */
    public int deleteTMonitorPointByApeId(String apeId);

    /**
     * 批量删除设备
     *
     * @param apeIds 需要删除的数据主键集合
     * @return 结果
     */
    public int deleteTMonitorPointByApeIds(String[] apeIds);

    /**
     * 查询监控点的状态统计信息。
     *
     * 该方法根据提供的请求参数查询并返回指定单位或多个单位的监控点状态统计信息。
     * 统计信息包括总监控点数、在线监控点数和离线监控点数。
     *
     * @param tMonitorPointRequest 包含查询条件的请求对象，可以包含以下字段：
     *                             - unitCodes: 单位代码列表（可选），用于筛选特定单位的监控点。
     *                             - unitCode: 单个单位代码（可选），用于筛选特定单位的监控点。
     * @return 返回一个包含监控点状态统计信息的 HashMap，键值对如下：
     *         - "totalMonitorCount": 总监控点数
     *         - "onlineMonitorCount": 在线监控点数
     *         - "offlineMonitorCount": 离线监控点数
     */
    public HashMap<String, Integer> getStatusCount(TMonitorPointRequest tMonitorPointRequest);

}
